/**
 * 函数重载 （多个重载签名，一种实现签名）
 * */
// 重载函数签名
function makeDate(timestamp: number): Date
function makeDate(m: number, d: number, y: number): Date
// 实现签名
function makeDate(mOrTimestamp: number, d?: number, y?: number): Date {
  if (d !== undefined && y !== undefined) {
    return new Date(y, mOrTimestamp, d)
  } else {
    return new Date(mOrTimestamp)
  }
}

const d1 = makeDate(1231124)
const d2 = makeDate(8, 3, 2022)
// 传递参数应该以重载签名的参数为准，实现签名的参数只是为了兼容函数重载的参数。
// const d3 = makeDate(8, 3)

console.log(d1, d2)